package com.dwfyc.hibernate;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;

/**
 * Proveedor entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "proveedor", catalog = "firmes", uniqueConstraints = @UniqueConstraint(columnNames = "DNI_CIF"))
public class Proveedor implements java.io.Serializable {

	// Fields

	private Integer idProveedor;
	private Rol rol;
	private String nombre;
	private Integer movil;
	private String email;
	private String contacto;
	private String dniCif;
	private String clave;
	private Set<Vehiculo> vehiculos = new HashSet<Vehiculo>(0);
	private Set<Asalariado> asalariados = new HashSet<Asalariado>(0);
	private Set<ProveedorDocumento> proveedorDocumentos = new HashSet<ProveedorDocumento>(
			0);
	private Set<ObraProveedor> obraProveedors = new HashSet<ObraProveedor>(0);
	private Set<Empresa> empresas = new HashSet<Empresa>(0);

	// Constructors

	/** default constructor */
	public Proveedor() {
	}

	/** minimal constructor */
	public Proveedor(Integer idProveedor, Rol rol, String nombre,
			Integer movil, String email, String contacto, String dniCif,
			String clave) {
		this.idProveedor = idProveedor;
		this.rol = rol;
		this.nombre = nombre;
		this.movil = movil;
		this.email = email;
		this.contacto = contacto;
		this.dniCif = dniCif;
		this.clave = clave;
	}

	/** full constructor */
	public Proveedor(Integer idProveedor, Rol rol, String nombre,
			Integer movil, String email, String contacto, String dniCif,
			String clave, Set<Vehiculo> vehiculos, Set<Asalariado> asalariados,
			Set<ProveedorDocumento> proveedorDocumentos,
			Set<ObraProveedor> obraProveedors, Set<Empresa> empresas) {
		this.idProveedor = idProveedor;
		this.rol = rol;
		this.nombre = nombre;
		this.movil = movil;
		this.email = email;
		this.contacto = contacto;
		this.dniCif = dniCif;
		this.clave = clave;
		this.vehiculos = vehiculos;
		this.asalariados = asalariados;
		this.proveedorDocumentos = proveedorDocumentos;
		this.obraProveedors = obraProveedors;
		this.empresas = empresas;
	}

	// Property accessors
	@Id
	@Column(name = "idProveedor", unique = true, nullable = false)
	public Integer getIdProveedor() {
		return this.idProveedor;
	}

	public void setIdProveedor(Integer idProveedor) {
		this.idProveedor = idProveedor;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "idrol", nullable = false)
	public Rol getRol() {
		return this.rol;
	}

	public void setRol(Rol rol) {
		this.rol = rol;
	}

	@Column(name = "Nombre", nullable = false, length = 100)
	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	@Column(name = "Movil", nullable = false)
	public Integer getMovil() {
		return this.movil;
	}

	public void setMovil(Integer movil) {
		this.movil = movil;
	}

	@Column(name = "Email", nullable = false, length = 100)
	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	@Column(name = "Contacto", nullable = false, length = 65)
	public String getContacto() {
		return this.contacto;
	}

	public void setContacto(String contacto) {
		this.contacto = contacto;
	}

	@Column(name = "DNI_CIF", unique = true, nullable = false, length = 9)
	public String getDniCif() {
		return this.dniCif;
	}

	public void setDniCif(String dniCif) {
		this.dniCif = dniCif;
	}

	@Column(name = "Clave", nullable = false, length = 10)
	public String getClave() {
		return this.clave;
	}

	public void setClave(String clave) {
		this.clave = clave;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "proveedor")
	public Set<Vehiculo> getVehiculos() {
		return this.vehiculos;
	}

	public void setVehiculos(Set<Vehiculo> vehiculos) {
		this.vehiculos = vehiculos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "proveedor")
	public Set<Asalariado> getAsalariados() {
		return this.asalariados;
	}

	public void setAsalariados(Set<Asalariado> asalariados) {
		this.asalariados = asalariados;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "proveedor")
	public Set<ProveedorDocumento> getProveedorDocumentos() {
		return this.proveedorDocumentos;
	}

	public void setProveedorDocumentos(
			Set<ProveedorDocumento> proveedorDocumentos) {
		this.proveedorDocumentos = proveedorDocumentos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "proveedor")
	public Set<ObraProveedor> getObraProveedors() {
		return this.obraProveedors;
	}

	public void setObraProveedors(Set<ObraProveedor> obraProveedors) {
		this.obraProveedors = obraProveedors;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "proveedor")
	public Set<Empresa> getEmpresas() {
		return this.empresas;
	}

	public void setEmpresas(Set<Empresa> empresas) {
		this.empresas = empresas;
	}

}